package com.kehongborui.reg;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;

/**
 * 统计制定文件的单词出现的次数
 */
public class CountWordDemo {
    private static final String FILE_NAME = "day26\\src\\com\\kehongborui\\reg\\CountWordDemo.java";
    public static void main(String[] args) {
        count(FILE_NAME);
    }

    /**
     * 1. 读取文件的内容
     * 2. 根据指定的规则拆分文件为 单词
     * 3. 根据拆分的单词进行统计
     */
    public static Map<String, Integer> count(String fileName) {
        Map<String, Integer> result = new HashMap<>();   // 存储统计结果的map
        // try-resource
        try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {  // 创建文件流
            String line; // 临时存储行数据
            while ((line = reader.readLine()) != null) {  // 读取每一行的数据
                String reg = "[^a-zA-Z]+";   // 拆分条件
                String[] wordArr = line.split(reg);  // 根据正则拆分过后的数组

                for (String word : wordArr) {
                    if ("".equals(word)) {
                        continue;
                    }

                    if (!result.containsKey(word)) {   // 如果没有的话，直接将当前单词的数量赋值为 1
                        result.put(word, 1);
                    } else {
                        result.put(word, result.get(word) + 1);
                    }
                }
            }
        } catch (Exception e) {

        }

        return result;
    }
}
